/*
вычислить значения функции y=F(x) для значений аргумента x, изменяющегося 
в интервале от Xначальное до Xконечное c шагом ∆x. 
Для вычисления значений использовать собственную функцию, т.е. ввести функцию пользователя F(x). 
Для использования математических функций (синус, косинус, логарифм) необходимо подключить 
математическую библиотеку (#include “math.h”). из полученных данных сформировать таблицу 
содержащую столбцы – №п.п; значение аргумента х; значение параметра а; значение аргумента у. /*

#include <iostream>
#include "Math.h"
#include "conio.h"

using namespace std;

double y(double, double);//ссылка на функцию
bool test(double);

int main() {
	setlocale(LC_ALL, "Rus");
	double x, a;
	double n = 0;//n - номер строки
	printf("Введите значение параметра a\n"); //не превышающее +/- 10^(+/-)6 
	scanf_s("%lf", &a);

	double result;
	result = a;

	if (test(a)) {
		printf("__n___|___________y___________|___x___|________a_________|\n");
		for (x = -1.5; x <= 23.5; x = x + 2.5) {
			n++;
		
			result = y(x, a);
			if (isnan(result)) {
				//невозможно посчитать
				printf("%5.f |\t Невозможно сосчитать | %5.1f |\t %15.6f |\n", n, x, a);
			}
			else {
				//все норм
				printf("%5.f |\t %20.6f | %5.1f |\t %15.6f |\n", n, y(x, a), x, a);
			}
		}
		printf("______|_______________________|_______|__________________|\n");
	}
	else {
		printf("Некорректный ввод\n");
	}

	system("pause");
	return 0;
}

double y(double x, double a) {
	double y = sin(x) / sqrt(x * cos((3 * x) - a));
	return y;
}

bool test(double a) {
	if (((-1000000 <= a) && (a <= -0.000001)) || ((0.000001 <= a) && (a <= 1000000))) {
		return true;
	}
	else {
		return false;
	}
}